package n01;

public class Circle {
	private double radius; //半径
	//为保证类的封装性，成员变量一般设置为私有的private，即不允许在其他类中直接对该字段进行访问，要想访问该字段，
	//可以利用本类提供的public的方法来完成，setter方法用来设置私有数据的值，getter用来获取私有数据的值。
	//没有getter，就无法获取私有数据的值，没有setter，就无法设置私有数据的值。
	//在setter中，可以对设置的值的合法性进行检验。
	public double getRadius() {
		return radius;
	}
	public void setRadius(double radius) {
		this.radius = radius;
	}
	//(1)在使用new创建对象时，由编译器自动调用构造方法来对对象的成员变量进行初始化，构造方法在对象的整个生命周期内会调用一次且仅有一次。
	//(2)构造方法的名字和类名完全相同，但是没有返回值这一项，连void也不能有。
	//(3)若我们没有写构造方法，系统会提供一个默认的没有参数的构造方法，但若我们写有任何构造方法，系统将不再提供没有参数的构造方法，
	//如果需要，必须显式提供没有参数的构造方法。
	//(4)方法重载的条件就是参数不同，和参数的名称及返回值没有关系
	//参数相同是指参数的个数相同并且对应位置参数的类型也都相同，否则就是不同。
	public Circle() {
		
	}
	public Circle(double radius) {
		this.radius = radius;
	}
	public double getArea() { //计算圆面积， 实例方法
		double result=Math.PI*radius*radius;//Math.pow(r,2)
		return result;
	}
	public double getPeremeter() { //计算圆的周长
		return 2*Math.PI*radius;
	}
	public static void main(String[] args) {
		Circle c1 = new Circle();
		System.out.println("c1的面积="+c1.getArea());
		Circle c2 = new Circle();
		c2.setRadius(10);
		System.out.println("c2的面积="+c2.getArea());
		Circle c3 = new Circle(100);//创建对象时直接对数据进行初始化
		System.out.println("c3的面积="+c3.getArea());
		c3.setRadius(1);//在对象的生命周期内修改其值
		System.out.println("c3的面积="+c3.getArea());
	}
}
